/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BeansGerenciaveis;

import DAO.Conexao;
import DAO.InstituicaoDao;
import bean.Instituicao;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author fernando
 */
@ManagedBean
@SessionScoped
public class InstituicaoBean implements Serializable {

    /**
     * Creates a new instance of InstituicaoBean
     */
    private InstituicaoDao instDao;
    private Instituicao instituicao;
    private PreparedStatement ps;
    private DataModel<Instituicao> instituicoes;
    private boolean sucesso = false;
    private Conexao conexao;
    private List<Instituicao> listaInstituicoes;
    
    public InstituicaoBean(){
        instituicao = new Instituicao();
        instDao = new InstituicaoDao();
        
    }
    
    public void novaInstituicao()
    {
        instituicao = new Instituicao();
        instDao = new InstituicaoDao();
        this.carregarInstituicoes();
        
    }
    
    public InstituicaoDao getInstDao() {
        return instDao;
        
    }

    public void setInstDao(InstituicaoDao instDao) {
        this.instDao = instDao;
    }

    public Instituicao getInstituicao() {
        return instituicao;
    }

    public void setInstituicao(Instituicao instituicao) {
        this.instituicao = instituicao;
    }

    public PreparedStatement getPs() {
        return ps;
    }

    public void setPs(PreparedStatement ps) {
        this.ps = ps;
    }

    

    public void setInstituicoes(DataModel<Instituicao> instituicoes) {
        this.instituicoes = instituicoes;
    }

    public boolean isSucesso() {
        return sucesso;
    }

    public void setSucesso(boolean sucesso) {
        this.sucesso = sucesso;
    }

    public Conexao getConexao() {
        return conexao;
    }

    public void setConexao(Conexao conexao) {
        this.conexao = conexao;
    }
    
    
    
    public String cadastroInstituicao()
    {
        String resultado = "/cadastros/acaoErro";
        
        instDao = new InstituicaoDao();
        
        System.out.println(instituicao.getNome());
        System.out.println(instituicao.getEstado());
        System.out.println(instituicao.getMunicipio());
        
        sucesso = instDao.cadastrarInstituicao(instituicao);
        
        if(sucesso)
        {
            this.novaInstituicao();
            this.carregarInstituicoes();
            return "/cadastros/acaoSucesso";
        }
        
       
       
       
        
        return resultado;
    }
    
    public void selecionar()
    {
        instituicao = instituicoes.getRowData();
    }

    public DataModel<Instituicao> getInstituicoes() {
        System.out.println("Instituicao Dao - gerInstituicoes: Fui executado!");
        if(this.instituicoes == null){
            this.carregarInstituicoes();
        }
        return instituicoes;
    }
    
    //Método Necessário para retornar uma lista a ser mostrada no selectOneMenu da view de cadastro de autores!
    
    public List<Instituicao> listarInstituicoes(){
        if(listaInstituicoes == null){
            this.carregarInstituicoes();
        }
        return listaInstituicoes;
    }
    
    public String removerInstituicao() {
        
        
        String resultado = "/cadastros/acaoErro";
        instDao = new InstituicaoDao();
        sucesso = instDao.removerInstituicao(instituicao);

        if (sucesso) {
            this.carregarInstituicoes();
            this.novaInstituicao();
            return "/cadastros/acaoSucesso";
        }

        return resultado;
    }
    
    public String editarInstituicao()
    {
        String resultado = "/cadastros/acaoErro";
        
        instDao = new InstituicaoDao();
        System.out.println(instituicao.getId());
        System.out.println(instituicao.getNome());
        System.out.println(instituicao.getEstado());
        System.out.println(instituicao.getMunicipio());
        sucesso = instDao.alterarInstituicao(instituicao);
        
        if(sucesso)
        {
            this.novaInstituicao();
            this.carregarInstituicoes();
            resultado = "/cadastros/acaoSucesso";
        }
        
        return resultado;
    }
    
    public void carregarInstituicoes(){
        instDao = new InstituicaoDao();
        listaInstituicoes = instDao.listarInstituicoes();
        
        instituicoes = new ListDataModel<Instituicao>(listaInstituicoes);
    }

    public List<Instituicao> getListaInstituicoes() {
        if(this.listaInstituicoes == null){
            this.carregarInstituicoes();
        }
        return listaInstituicoes;
    }

    public void setListaInstituicoes(List<Instituicao> listaInstituicoes) {
        this.listaInstituicoes = listaInstituicoes;
    }
    
    

}
